import Vue from 'vue';
import ElementUI from 'element-ui';
import echarts from 'echarts';
import Vue2OrgTree from 'vue2-org-tree';

import App from './App.vue';
import router from './router/index.js';
import store from './store';
import 'element-ui/lib/theme-chalk/index.css';
import post from './apis/index';
// @ts-ignore
import { drag, tabscroll } from './components/config/drag';
import { getToken } from '@/utils/auth';

//这里少了个 default-passive-events 的一个插件 
// 来解决 浏览器 抛出的警告
// Added non-passive event listener to a scroll-blocking 'touchmove' event. Consider marking event handler as 'passive' to make the page more responsive.
// Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive
// icon svg图
// import './icons'
// 富文本编辑器
import VueQuillEditor from 'vue-quill-editor';
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import '@/styles/quillEditor.css';
import '@/styles/index.scss';
// 设置自定义改变样式跟换主题色
import '@/styles/setAllPicker.scss';
// 全局组件引用
Vue.use(ElementUI);
Vue.use(VueQuillEditor);
Vue.use(drag);
Vue.use(Vue2OrgTree);

Vue.prototype.$post = post;
Vue.prototype.$echarts = echarts;

Vue.config.productionTip = false; // 阻止启动生产消息 
// Vue.config.devtools = true;

// 加载全局过滤器
// Object.keys(filters).forEach(key => {
//     Vue.filter(key, filters[key]);
// })

// 全局路由守卫
router.beforeEach((to: any, from: any, next: any) => {
    // alert(from.path + '--------from.path-------' + to.path + '--------to.path');
    // const whiteRoutes = []; // 路由白名单
    const isLogin: any = getToken() || '';
    // 判断路径重复 禁止跳转
    if (from.path === to.path) {
        next(false);
    } else if (!isLogin && to.path !== '/') { // 未登录
        // console.log(isLogin, '登录信息')
        if (to.path === '/login') { // 跳转去登录页面
            next();
        } else { // 强制跳转去登录页面
            // ElementUI.MessageBox({
            //     title: '提示',
            //     message: '账号已退出，请重新登录！',
            //     // type: 'error',
            //     closeOnClickModal: false,
            //     customClass: 'warning', type: 'warning',
            //     showClose: false
            // }).then(() => {
            //     next('/login')
            // })
            next('/login');
        }
    } else if (!isLogin && to.path === '/') {
        next();
        // 有登录信息 切 从‘/’往'业务菜单跳 不给跳转'
        // } else if (isLogin && from.path === '/') {
        //     next('/index/home');
    } else { // 已登录
        const userInfo = JSON.parse(isLogin);
        // console.log('已登录逻辑');
        // console.log('to.path', to.path);
        if (to.path === '/login') { // 未退出登录情况下跳转到登录页面
            next('/index/home');
        } else if (from.path === '/' && to.path !== '/index/home') {  // 刷新页面的情况
            next('/index/home');

            //注释掉多余的 管理员 的登录页面
            // } else if (to.path === '/index/home') {
            //     if (userInfo.roleType[0] === '1') {
            //         next('/index/managerHome');
            //     }
        } else {
            next();
        }

    }

    // 跳转到 midlePage 页面时会重新创建app.vue 页面 并且会调用浏览器刷新的回调， 所以在跳转到这个页面之前移除浏览器刷新的监听事件

});

new Vue({
    router,
    store,
    render: h => h(App),
}).$mount('#app');
